package oracle;

import java.sql.*;

/*
* 实现：利用java 链接 Oracle 数据库 CRUD 【查】
* 1.加载驱动 oracle.jdbc.OracleDriver  oracle10
*           com.mysql.jdbc.Driver   mysql5.5 驱动
* 2.获取链接
*   ①获取Oracle基本信息：地址，用户名，密码
*   ②获取信息交给工具类DriverManager处理，链接成功返回Connection
*   ③打桩测试，是否链接成功
* ------------JDBC链接成功oracle
* --------------JDBC规范----CRUD“增删改”
*   ④执行sql----创建表--oracle中创建   login表  序号，姓名，手机号
*    java提到对象 Statement对象，作用：执行SQL语句的类，提供执行SQL方法
*   ⑤处理结果
* */
public class OracleJDBC {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //1.加载驱动   oracle版本  10g
        Class.forName("oracle.jdbc.OracleDriver");
        //2.获取链接【准备工作：地址，用户名，密码】
        //①链接Oracle基本信息
        String username="system";//Oracle数据库  用户名
        String password="lhm041210";//密码：自己的，链接本地
        //thin:瘦客户端--固定前端
        String url="jdbc:oracle:thin:@127.0.0.1:1521:XE";
        //②Oracle基本信息交给工具类
        Connection con=DriverManager.getConnection(url,username,password);
        //③打桩：数据是否链接成功
        System.out.println("测试数据库链接成功："+con);
        //④执行sql-----statement对象---CRUD操作  查询 executeQuery
        //链接成功oracle之后【Connection来创建一个对象】，产生Statement对象
        Statement st=con.createStatement();
        //执行SQL查询操作---查询语句
        String sql="select * from login";
        //Statement对象 查询和增删改---查询方法：executeQuery返回对象
        //ResultSet对象--保存所有查询的记录数据【字段和记录】
        ResultSet rs =st.executeQuery(sql);
        //⑤处理结果【取所有记录数  1.判断有没有字段  2.取字段中记录数】
        while(rs.next()){//next() 判断表中是否有字段，有字段返回true，无字段返回false
        //取出字段中所有记录数
            //oracle中number 对应 java中 int
        int id=rs.getInt("id");
        String name=rs.getString("name");
        String phone=rs.getString("phone");
        System.out.println("login表的所有数据："+id+" "+name+" "+phone);
        }

        //练习：JDBC链接Oracle--login--增加一条数据
        // Statement对象 查询和增删改---增删改方法：executeUpdate返回对象
        String sql1="insert into login values(4,'守仁','1058')";
        int rows=st.executeUpdate(sql1);
        System.out.println("增加"+rows+"记录");

        //⑥关闭资源(倒着关，ResultSet，Statement，Connection)
        rs.close();
        st.close();
       // con.close();

    }
}
